package com.yonyou.sto.modules.ums.util;

import cn.hutool.core.util.StrUtil;
import com.yonyou.sto.modules.ums.dto.UmsNcCusttaxParam;
import com.yonyou.sto.modules.ums.model.UmsNcCusttax;
import com.yonyou.sto.modules.ums.model.UmsNcMategrade;

import java.util.ArrayList;
import java.util.List;

public class NCCusttaxUtil {

    public static void toOrigin(UmsNcCusttax umsNcCusttax){
        umsNcCusttax.setCusttax1("0");
        umsNcCusttax.setCusttax2("0");
        umsNcCusttax.setCusttax3("0");
        umsNcCusttax.setCusttax4("0");
        umsNcCusttax.setCusttax5("0");
        umsNcCusttax.setCusttax6("0");
        umsNcCusttax.setCusttax7("0");
        umsNcCusttax.setCusttax8("0");
        umsNcCusttax.setCusttax9("0");
        umsNcCusttax.setCusttax10("0");
        umsNcCusttax.setCusttax11("0");
        umsNcCusttax.setCusttax14("0");
        umsNcCusttax.setCusttax15("0");
        umsNcCusttax.setCusttax16("0");
        umsNcCusttax.setCusttax17("0");
        umsNcCusttax.setDef9("0");
        umsNcCusttax.setDef10("0");
    };


    public static boolean setCustMateName(UmsNcCusttax umsNcCusttax){
        List<String> custMateNames = umsNcCusttax.getCustMateNames();
        int i = 0;
        for (String custMateName : custMateNames) {
            switch (custMateName){
                case "CUSTTAX1":
                    umsNcCusttax.setCusttax1("1");
                    i++;
                    break;
                case "CUSTTAX2":
                    umsNcCusttax.setCusttax2("1");
                    i++;
                    break;
                case "CUSTTAX3":
                    umsNcCusttax.setCusttax3("1");
                    i++;
                    break;
                case "CUSTTAX4":
                    umsNcCusttax.setCusttax4("1");
                    i++;
                    break;
                case "CUSTTAX5":
                    umsNcCusttax.setCusttax5("1");
                    i++;
                    break;
                case "CUSTTAX6":
                    umsNcCusttax.setCusttax6("1");
                    i++;
                    break;
                case "CUSTTAX12":
                    umsNcCusttax.setDef9("1");
                    i++;
                    break;
                case "CUSTTAX16":
                    umsNcCusttax.setCusttax16("1");
                    i++;
                    break;
            }
        }
        return i==custMateNames.size();
    }

    public static List<String> getMateName(UmsNcCusttax umsNcCusttax){
        int i = 0;
        List<String> custMateNames=new ArrayList<>();
        for (int j=1;j<=8;j++){
            switch (j){
                case 1:
                    String custtax1 = umsNcCusttax.getCusttax1();
                    if (StrUtil.isNotBlank(custtax1)&&StrUtil.isNotEmpty(custtax1)){
                        if ("1".equals(custtax1)){
                            custMateNames.add("CUSTTAX1");
                            i++;
                        }
                    }
                    break;
                case 2:
                    String custtax2 = umsNcCusttax.getCusttax2();
                    if (StrUtil.isNotBlank(custtax2)&&StrUtil.isNotEmpty(custtax2)){
                        if ("1".equals(custtax2)){
                            custMateNames.add("CUSTTAX2");
                            i++;
                        }
                    }
                    break;
                case 3:
                    String custtax3 = umsNcCusttax.getCusttax3();
                    if (StrUtil.isNotBlank(custtax3)&&StrUtil.isNotEmpty(custtax3)){
                        if ("1".equals(custtax3)){
                            custMateNames.add("CUSTTAX3");
                            i++;
                        }
                    }
                    break;
                case 4:
                    String custtax4 = umsNcCusttax.getCusttax4();
                    if (StrUtil.isNotBlank(custtax4)&&StrUtil.isNotEmpty(custtax4)){
                        if ("1".equals(custtax4)){
                            custMateNames.add("CUSTTAX4");
                            i++;
                        }
                    }
                    break;
                case 5:
                    String custtax5 = umsNcCusttax.getCusttax5();
                    if (StrUtil.isNotBlank(custtax5)&&StrUtil.isNotEmpty(custtax5)){
                        if ("1".equals(custtax5)){
                            custMateNames.add("CUSTTAX5");
                            i++;
                        }
                    }
                    break;
                case 6:
                    String custtax6 = umsNcCusttax.getCusttax6();
                    if (StrUtil.isNotBlank(custtax6)&&StrUtil.isNotEmpty(custtax6)){
                        if ("1".equals(custtax6)){
                            custMateNames.add("CUSTTAX6");
                            i++;
                        }
                    }
                    break;
                case 7:
                    String def9 = umsNcCusttax.getDef9();
                    if (StrUtil.isNotBlank(def9)&&StrUtil.isNotEmpty(def9)){
                        if ("1".equals(def9)){
                            custMateNames.add("CUSTTAX12");
                            i++;
                        }
                    }
                    break;
                case 8:
                    String custtax16 = umsNcCusttax.getCusttax16();
                    if (StrUtil.isNotBlank(custtax16)&&StrUtil.isNotEmpty(custtax16)){
                        if ("1".equals(custtax16)){
                            custMateNames.add("CUSTTAX16");
                            i++;
                        }
                    }
                    break;
            }
        }
        return i == custMateNames.size() ? custMateNames : null;
    }

    public static boolean setSpecModel(UmsNcCusttax umsNcCusttax){
        List<String> specModels = umsNcCusttax.getSpecModel();
        int i = 0;
        for (String specModel : specModels) {
            switch (specModel){
                case "CUSTTAX7":
                    umsNcCusttax.setCusttax7("1");
                    i++;
                    break;
                case "CUSTTAX8":
                    umsNcCusttax.setCusttax8("1");
                    i++;
                    break;
                case "CUSTTAX9":
                    umsNcCusttax.setCusttax9("1");
                    i++;
                    break;
                case "CUSTTAX10":
                    umsNcCusttax.setCusttax10("1");
                    i++;
                    break;
                case "CUSTTAX11":
                    umsNcCusttax.setCusttax11("1");
                    i++;
                    break;
                case "CUSTTAX14":
                    umsNcCusttax.setCusttax14("1");
                    i++;
                    break;
                case "CUSTTAX15":
                    umsNcCusttax.setCusttax15("1");
                    i++;
                    break;
                case "CUSTTAX17":
                    umsNcCusttax.setCusttax17("1");
                    i++;
                    break;
                case "CUSTTAX13":
                    umsNcCusttax.setDef10("1");
                    i++;
                    break;
            }
        }
        return i==specModels.size();
    }

    public static List<String> getSpecModel(UmsNcCusttax umsNcCusttax){
        int i = 0;
        List<String> specModels=new ArrayList<>();
        for (int j=7;j<=15;j++){
            switch (j){
                case 7:
                    String custtax7 = umsNcCusttax.getCusttax7();
                    if (StrUtil.isNotBlank(custtax7)&&StrUtil.isNotEmpty(custtax7)){
                        if ("1".equals(custtax7)){
                            specModels.add("CUSTTAX7");
                            i++;
                        }
                    }
                    break;
                case 8:
                    String custtax8 = umsNcCusttax.getCusttax8();
                    if (StrUtil.isNotBlank(custtax8)&&StrUtil.isNotEmpty(custtax8)){
                        if ("1".equals(custtax8)){
                            specModels.add("CUSTTAX8");
                            i++;
                        }
                    }
                    break;
                case 9:
                    String custtax9 = umsNcCusttax.getCusttax9();
                    if (StrUtil.isNotBlank(custtax9)&&StrUtil.isNotEmpty(custtax9)){
                        if ("1".equals(custtax9)){
                            specModels.add("CUSTTAX9");
                            i++;
                        }
                    }
                    break;
                case 10:
                    String custtax10 = umsNcCusttax.getCusttax10();
                    if (StrUtil.isNotBlank(custtax10)&&StrUtil.isNotEmpty(custtax10)){
                        if ("1".equals(custtax10)){
                            specModels.add("CUSTTAX10");
                            i++;
                        }
                    }
                    break;
                case 11:
                    String custtax11 = umsNcCusttax.getCusttax11();
                    if (StrUtil.isNotBlank(custtax11)&&StrUtil.isNotEmpty(custtax11)){
                        if ("1".equals(custtax11)){
                            specModels.add("CUSTTAX11");
                            i++;
                        }
                    }
                    break;
                case 13:
                    String custtax14 = umsNcCusttax.getCusttax14();
                    if (StrUtil.isNotBlank(custtax14)&&StrUtil.isNotEmpty(custtax14)){
                        if ("1".equals(custtax14)){
                            specModels.add("CUSTTAX14");
                            i++;
                        }
                    }
                    break;
                case 14:
                    String custtax15 = umsNcCusttax.getCusttax15();
                    if (StrUtil.isNotBlank(custtax15)&&StrUtil.isNotEmpty(custtax15)){
                        if ("1".equals(custtax15)){
                            specModels.add("CUSTTAX15");
                            i++;
                        }
                    }
                    break;
                case 15:
                    String custtax17 = umsNcCusttax.getCusttax17();
                    if (StrUtil.isNotBlank(custtax17)&&StrUtil.isNotEmpty(custtax17)){
                        if ("1".equals(custtax17)){
                            specModels.add("CUSTTAX17");
                            i++;
                        }
                    }
                    break;
                case 12:
                    String def10 = umsNcCusttax.getDef10();
                    if (StrUtil.isNotBlank(def10)&&StrUtil.isNotEmpty(def10)){
                        if ("1".equals(def10)){
                            specModels.add("CUSTTAX13");
                            i++;
                        }
                    }
                    break;
            }
        }
        return i == specModels.size() ? specModels : null;
    }

    /**
     *     对导入的客户对账关系设置客户物料名称的配置和规格型号的配置
     *          客户物料名称的对照关系缺少3个值：型号，客户物料编码，客户物料名称
     *          规格型号的对照关系缺少3个值：型号，客户物料编码，客户物料名称
     */
    public static void judgeCUSTTAX(UmsNcCusttax umsNcCusttax){
        String custMateName = umsNcCusttax.getDef5();//输入的客户物料名称
        String specModel = umsNcCusttax.getDef6();//输入的规格型号
        String mateName = umsNcCusttax.getDef3();//物料名称
        String mateCode = umsNcCusttax.getDef4();//物料编码
        String taxname = umsNcCusttax.getTaxname();//税收分类名称
        //根据客户物料名称设置配置
        if (StrUtil.isNotBlank(custMateName)){
            if (StrUtil.isNotBlank(mateName)){
                if (custMateName.contains(mateName)) umsNcCusttax.setCusttax2("1");
            }
            if (StrUtil.isNotBlank(mateCode)){
                if (custMateName.contains(mateCode)) umsNcCusttax.setCusttax3("1");
            }
            if (StrUtil.isNotBlank(taxname)){
                if (custMateName.contains(taxname)) umsNcCusttax.setCusttax1("1");
            }
        }

        //根据规格型号设置配置
        if (StrUtil.isNotBlank(specModel)){
            if (StrUtil.isNotBlank(mateName)){
                if (custMateName.contains(mateName)) umsNcCusttax.setCusttax2("1");
            }
            if (StrUtil.isNotBlank(mateCode)){
                if (custMateName.contains(mateCode)) umsNcCusttax.setCusttax3("1");
            }
        }


    }

}
